<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>
Intel&reg; Integrated Performance Primitives VC-1 Decoder Sample  
</title>
<style>
<!-- li.MsoNormal {mso-style-parent:""; margin-bottom:.0001pt; font-size:12.0pt; font-family:"Times New Roman"; color:black; margin-left:0in; margin-right:0in; margin-top:0in} -->
</style>
</head>
<body bgcolor="#ffffff" text="#000000">
<center>
<h1>
<b>
<i>
Intel  
<sup>
&reg;  
</sup>
Integrated Performance Primitives  
<br>
VC-1 Decoder  
</i>
</b>
</h1>
</center>
<h5>
<a href="#Overview">
Overview  
</a>
<br>
<a href="#Package_Contents">
Package Contents  
</a>
<br>
<a href="#Treading capabilities">
Treading capabilities  
</a>
<br>
<a href="#What_is_new">
What is new  
</a>
<br>
<a href="#Known_Limitations">
Known Limitations  
</a>
<br>
<br>
</h5>
<h2>
<a name="Overview">
</a>
Overview  
</h2>
This sample illustrates how to use the Intel  
<sup>
&reg;  
</sup>
Integrated Performance Primitives (Intel  
<sup>
&reg;  
</sup>
IPP) signal processing, image processing and video coding functions to implement a VC-1 decoder.  
<p>
Decoder supports SMPTE 421M standard all profiles (simple, main and advanced). All publicly available conformance streams passed successfully.  
<p>
Additional information on this software as well as other Intel software performance products is available at  
<a href="http://developer.intel.com/software/products/">
http://developer.intel.com/software/products/  
</a>
.  
</p>
<h2>
<a name="Package_Contents">
</a>
Package Contents  
</h2>
<p class="MsoNormal">
The  
<b>
Intel  
<sup>
&reg;  
</sup>
IPP VC-1 Decoder  
</b>
package contains the following files:  
<span style="font-size: 10pt;">
<o:p>
</o:p>
</span>
</p>
<table style="" border="1" cellpadding="0" width="599">
<tbody>
<tr>
<td colspan="2" style="padding: 0.75pt;" bgcolor="#c0c0c0" width="589">
<b>
.\ipp-samples\audio-video-codecs\codec\vc1_dec\  
</b>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="254">
<p class="MsoNormal">
readme.htm  
</p>
</td>
<td style="padding: 0.75pt;" width="329">
<p class="MsoNormal">
This file  
</p>
</td>
</tr>
<tr>
<td colspan="2" style="padding: 0.75pt;" bgcolor="#c0c0c0" width="589">
<b>
.\ipp-samples\audio-video-codecs\codec\vc1_dec\include\  
</b>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_video_decoder.h  
</td>
<td style="padding: 0.75pt;" rowspan="13" width="294">
Header file containing definitions of the decoder  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_thread.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_task_store.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_task.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_seq.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_run_level_tbl.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_job.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_intens_comp_tbl.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_skipping.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_exception.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_frame_descr.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_debug.h  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_time_statistics.h  
</td>
</tr>
<tr>
<td colspan="2" style="padding: 0.75pt;" bgcolor="#c0c0c0" width="589">
<b>
.\ipp-samples\audio-video-codecs\codec\vc1_dec\src\  
</b>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_video_decoder.cpp  
</td>
<td style="padding: 0.75pt;" rowspan="45" width="329">
<p class="MsoNormal">
Source file containing  
<span lang="EN-US">
implementation of the decoder  
</span>
</p>
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_ipic.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_ipic_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_ppic.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_ppic_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_bpic.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_bpic_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_ipic.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_skipping.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_frame_descr.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_ipic_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_ppic.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_ppic_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_bpic.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_bpic_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_choose_table.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_deblock.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_deblock_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_deblock_com.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_bitplane.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_blk.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_blk_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_blk_com.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_cbp.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_intens_comp_tbl.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_job.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_com.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_interpolate.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_interpolate_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mb_interpolate_com.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mc.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mv_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_mv_com.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_pic_com.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_pic_com_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_run_level_tbl.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_seq.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_task_store.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_thread.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_smoothing.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_smoothing_adv.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_vopdq.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_debug.cpp  
</td>
</tr>
<tr>
<td style="padding: 0.75pt;" width="295">
umc_vc1_dec_time_statistics.cpp  
</td>
</tr>
</tbody>
</table>
<span style="">
<h2>
<a name="Treading capabilities">
</a>
Treading capabilities  
</h2>
<div class="Section1">
<p>
Different types of parallelization were implemented:  
<ul>
<li>
Slice parallelization - several slices inside one frame could be decoded at the same time  
</li>
<li>
Task parallelization - different tasks (decoding, reconstruction and so on) could be done on several slices inside one frame at the same time  
</li>
</ul>
In this version of decoder both models work together.  
<p>
VC1 decoder can create specified number of decoding threads or determine optimal number of threads automatically. The number of threads is controlled through numThreads member of UMC::BaseCodecParams init structure. For more details see Intel  
<sup>
&reg;  
</sup>
IPP Unified Media Classes Reference Manual. Synchronization is performed automatically by means of events and does not require any additional actions.  
<br>
<h2>
<a name="What_is_new">
</a>
What is new  
</h2>
<div class="Section1">
<ul type="disc">
<li class="MsoNormal">
Algorithmic optimization was done. It brought ~25% speedup on 1 thread model and ~20% on 2 thread model  
</li>
</ul>
<h2>
<a name="Known_Limitations">
</a>
Known Limitations  
</h2>
<div class="Section1">
<ul type="disc">
<li class="MsoNormal">
decoder crashes on IA64 Windows with next message "An exception occurred. Process will be terminated."  
</li>
<li class="MsoNormal">
decoder  
<span lang="EN-US">
supports simple, main and advanced profiles features  
</li>
<li class="MsoNormal">
decoder supports only pure video  
</li>
</ul>
</div>
<p>
<font size="-2">
Copyright &copy; 2002-2008 Intel Corporation. All rights reserved.  
</font>
</p>
</span>
</body>
</html>
